#!/bin/bash

# 爬虫启动脚本
# 用法: ./start_spider.sh <spider_name> [--clean-outputs]
# 例如: ./start_spider.sh nfpa --clean-outputs

# 检查参数
if [ $# -eq 0 ]; then
    echo "用法: $0 <spider_name> [--clean-outputs]"
    echo "例如: $0 nfpa --clean-outputs"
    exit 1
fi

SPIDER_NAME=$1
CLEAN_OUTPUTS=$2

# 检查爬虫名称是否为空
if [ -z "$SPIDER_NAME" ]; then
    echo "错误: 爬虫名称不能为空"
    exit 1
fi

# 构建日志文件名
LOG_FILE="${SPIDER_NAME}.log"
PID_FILE="${SPIDER_NAME}.pid"

# 检查是否已经在运行
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    if ps -p $PID > /dev/null 2>&1; then
        echo "爬虫 $SPIDER_NAME 已经在运行 (PID: $PID)"
        echo "日志文件: $LOG_FILE"
        echo "如需停止，请运行: ./stop_spider.sh $SPIDER_NAME"
        exit 1
    else
        echo "发现过期的 PID 文件，正在清理..."
        rm -f "$PID_FILE"
    fi
fi

# 构建命令
CMD="python main.py run --spider $SPIDER_NAME"
if [ "$CLEAN_OUTPUTS" = "--clean-outputs" ]; then
    CMD="$CMD --clean-outputs"
fi

echo "启动爬虫: $SPIDER_NAME"
echo "命令: $CMD"
echo "日志文件: $LOG_FILE"

# 后台启动爬虫
nohup $CMD > "$LOG_FILE" 2>&1 &
PID=$!

# 保存 PID
echo $PID > "$PID_FILE"

echo "爬虫已启动 (PID: $PID)"
echo "日志文件: $LOG_FILE"
echo "如需停止，请运行: ./stop_spider.sh $SPIDER_NAME"

# 等待一秒检查是否启动成功
sleep 1
if ps -p $PID > /dev/null 2>&1; then
    echo "✅ 爬虫启动成功"
else
    echo "❌ 爬虫启动失败，请检查日志文件: $LOG_FILE"
    rm -f "$PID_FILE"
    exit 1
fi 